home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 8 / The Arsenal Files Collection #8 (Arsenal Computer) (1996).ISO / g_quake / server1.zip / _MANUAL.TXT < prev    next >
Text File  |  1996-09-07  |  18KB  |  410 lines

  1. -------------------------------------------------------------------------
  2.  
  3. ###### Overview:
  4.  
  5. This is a set of deathmatch oriented QuakeC patches.
  6. The patches are to be installed on servers only.
  7. To a large extent they are organized in a module-like structure:
  8.  
  9. Module Telefrag:
  10.     Reduces the risk of getting telefragged by respawning players.
  11.     When a player respawns the module tries to find a spot which is not
  12.     occupied by another player. If such a spot is available the player
  13.     will respawn there. Only if no such spot is found the player will
  14.     respawn in occupied space, thereby telefragging another player.
  15.     Note that telefragging caused by players leaving teleporters is not
  16.     affected.
  17.  
  18. Module ExitRules:
  19.     Disallows to exit a level too early.
  20.     Players can only exit a level
  21.        - if at least one player has reached a minimum number of frags
  22.          (which is 40 by default).
  23.        - and if a certain time has passed on the current level (which
  24.          is 1 minute by default).
  25.     These ExitRules may be disabled by voting (see Module Vote).
  26.     The ExitRules valid for the current level are displayed when
  27.     the player enters the level.
  28.     Levels like 'dm1'-'dm6','start' and 'end' don't impose ExitRules.
  29.  
  30. Module Vote:
  31.     Allows decisions based on a majoriy of player votes.
  32.     Players may use the console commands
  33.        vote-exit:      to vote for exiting a level immediately.
  34.        vote-exitrules: to vote for disabling the rules imposed by
  35.                        the module ExitRules.
  36.     Votes are counted every few seconds. 
  37.     Voting for exiting allows to leave levels which don't provide an
  38.     exit.
  39.     Voting via 'vote-exit' and 'vote-exitrules' may both be used to 
  40.     override the ExitRules for the current level.
  41.     The console command 'help-vote' provides some help on available
  42.     voting options, the command 'votes' displays current voting
  43.     statistics.
  44.  
  45. Module KickSuicider:
  46.    Players suiciding twice within two minutes are kicked out of the
  47.    game.
  48.  
  49. Module Lightning:
  50.    This module reduces the damage done when discharging the lighning gun
  51.    under water. It furthermore improves the sound of the lightning gun
  52.    and causes a lighning gun discharge to happen only if the gun is 
  53.    really under water.
  54.  
  55. Module Observer:
  56.    As observer you just watch what's happening, without interacting
  57.    with other players or with the environment.
  58.    This especially means that other players will not notice you when you
  59.    are an observer.
  60.    As observer you can
  61.       - fly around. 
  62.       - switch to another observation point by pressing 'fire'.
  63.       - join the game as regular player by pressing 'jump'.
  64.    You can turn into an observer by pressing 'fire' when you
  65.    are dead.
  66.    When you connect to the server you automatically start as observer.
  67.    The command 'help-observer' provides help on the observer mode.
  68.  
  69. Module Motd: 
  70.    When connecting to the server a message-of-the-day may be 
  71.    center-printed to the player's screen.
  72.    A moment later, information about local server settings and
  73.    extensions is dumped to the player's console.
  74.  
  75. Module Skin:
  76.     This is a slightly improved version of Dennis Noordsij's 
  77.     (lnoordsi@inter.NL.net) Multiskin, which allows players to use
  78.     different skins (see also section Acknowledgements below).
  79.     The improvements have the effect that
  80.        - corpses show the correct skin.
  81.        - skins are preserved  across level changings (so that players 
  82.          have to choose their skin only once).
  83.        - the commands 'skin-next' and 'skin-prev' may be used to change
  84.          the skin.
  85.        - the command 'help-skin' provides some help about available
  86.          commands.
  87.        - names for Multiskin-1.1 skins and for Top20Skins-1.0 skins are 
  88.          shown when the player chooses a skin.
  89.    Players certainly still have to use proper player and player-head 
  90.    model files containing the actual skins to be displayed. 
  91.    ServerModules supports
  92.       - the MultiSkin 1.1 PLAYER.MDL file which may be found on 
  93.         Dennis Noordsij's QuakeC page: 
  94.            http://web.inter.NL.net/users/L.J.Noordsij/qc.htm
  95.       - the Top20Skins PLAYER.MDL and H_PLAYER.MDL file included in the
  96.         skin collection
  97.            ftp://ftp.cdrom.com/pub/quake/graphics/mdl/top20skins-1.0.zip
  98.         When using this set of skins gibbed heads will show the correct
  99.         skin also.
  100.  
  101. Module Init:
  102.     Allows client side initialization when connecting to the server
  103.     by causing the client to execute a sequence of 'init' commands.
  104.     Example: 
  105.        A player puts the following lines into his autexec.cfg:
  106.           alias init    init01
  107.           alias init01 "init-nextcall; alias init init02; echo successful; "
  108.           alias init02 "init-nextskin; alias init init03; " // skin  2
  109.           alias init03 "init-nextskin; alias init init04; " // skin  3
  110.           alias init04 "init-nextskin; alias init init05; " // skin  4
  111.           alias init05 "init-nextskin; alias init init06; " // skin  5
  112.           alias init06 "init-nextcall; alias init init07; color 3; "
  113.           alias init07 "               alias init init01; "
  114.        These lines cause that a short time after the player connected
  115.        to the server
  116.           - he is assigned the skin number 5.
  117.           - his color changes to 3.
  118.     How it works:
  119.        The server first tells the client to execute the command 'init'.
  120.        The client executes 'init' which includes either 'init-nextskin'
  121.        or 'init-nextcall', both of which tell the server to again let
  122.        the client execute the command 'init'. This continues until in 
  123.        the example above the empty assignment 'init07' terminates the
  124.        sequence. Apart from triggering the next step 'init-nextskin'
  125.        also increases the skin number by one.
  126.     Please note that this module is in an experimental state since
  127.     it is not clear how it works for high-ping-time/large-packet-loss
  128.     connections, so please tell me about your experiences.
  129.  
  130. Module LevelSelect:
  131.    Allows to specify which levels are offered on the server and in which
  132.    order they are to be played.
  133.    By default this module is used to modify the original level order
  134.    such that instead of the end level the level sequence dm1-...-dm6-end
  135.    is played when selecting the end map on the start level (the players
  136.    must exit the levels dm1-dm6 and end by voting (see Module Vote)).
  137.  
  138. Module Messages:
  139.    Allows to selectively enable or disable messages about picking up ammo,
  140.    armor, backpacks, keys, health, powerups and weapons. 
  141.    By default these messages are suppressed.
  142.   
  143. Module Rank:
  144.     The command 'rank' displays a sorted ranking table with entries 
  145.     in the format
  146.        X TOTAL = KILLS DEATHS ACCIDENTS = PLAYER
  147.     where
  148.         X         = letter 'D' if the player is dead, letter 'O' if
  149.                     the player is an observer
  150.         PLAYER    = the name of the player
  151.         TOTAL     = his total score
  152.         KILLS     = how many he killed    
  153.         DEATHS    = how often he got killed by other players
  154.         ACCIDENTS = number of self-caused, deathly accidents
  155.     A Suicide counts as double-accident.
  156.     The default formula for calculating TOTAL is
  157.         TOTAL     = 3*KILLS - DEATHS - 3*ACCIDENTS
  158.     The command 'help-rank' provides help on the format of the ranking
  159.     table and should explain the (local) formula used to calculate the 
  160.     total score as well.
  161.  
  162. Module ServerConsole:
  163.     Does nothing except except of printing some messages to the server
  164.     console when a player suicides, is killed, enters the game or is 
  165.     telefragged by another player.
  166.  
  167. Module ServerHelp:
  168.     Provides the command 'server-help', used to display some help on
  169.     server settings and extensions in the player console.
  170.     
  171. -------------------------------------------------------------------------
  172.  
  173. ###### Bugs/Unwanted Features:
  174.  
  175. # Observers occasionally get stuck or start in a position from which they
  176.   can't move away. If this happens just press 'fire' to jump to another 
  177.   place or use the command 'observer-noclip' to free yourself.
  178.   Observers may also get stuck when passing teleporters with buggy
  179.   target spots. The only examples I know so far are
  180.     - level e1m1: the teleporter leading to the pentagramm of protection.  
  181.     - level end: the teleporter leading to a spot from which the player
  182.                  falls down into the water.
  183.   Again, just press 'fire' to jump to another place or use the command
  184.   'observer-teleport'.
  185.  
  186. -------------------------------------------------------------------------
  187.  
  188. ###### How to install:
  189. ------------------------
  190.  
  191. This section assumes that you are a server administrator.
  192.  
  193. ### Testing:
  194. ------------
  195.  
  196. For testing purposes you may first want to try the precompiled PROGS.DAT.
  197.  
  198. Assuming that QUAKE.EXE resides in C:\GAMES\QUAKE you should
  199.    - create the directory C:\GAMES\QUAKE\SERVMODS
  200.    - copy the file PROGS.DAT included in the 'Server Modules' archive 
  201.      to C:\GAMES\QUAKE\SERVMODS
  202.    - start a listen server by 
  203.         QUAKE -GAME SERVMODS -LISTEN 2
  204.  
  205. ### Customizing:
  206. ----------------
  207.  
  208. Customizing requires that you know how to use the program PATCH.
  209. See the file '_patch.txt' included in the 'Server Modules' archive
  210. for details on how to obtain a free copy of this program and on how
  211. to use it. Jeff Epler (jepler@inetnebr.com) wrote '_patch.txt' and
  212.    ftp://ftp.cdrom.com/pub/quake/quakec/howpatch.txt
  213. should be the most recent version of this short introduction.
  214.  
  215. Assuming that the directory C:\GAMES\QUAKE\SERVMODS contains a fresh copy 
  216. of unmodified QuakeC sources together with the program QCCDOS you may 
  217. proceed in the following way:
  218.  
  219. # Unzip the 'Server Modules' archive in C:\GAMES\QUAKE\SERVMODS.
  220.  
  221. # Patch the sources by typing the command
  222.     PATCH < _SRVMODS.PAT
  223.  
  224. # Disable/Enable the usage of a specific module by editing the 
  225.   USE_MODULE_* constants in file _MODULES.QH .
  226.   By default you'll find there
  227.      float USE_MODULE_EXITRULES              = 1;
  228.      float USE_MODULE_INIT                   = 1;
  229.      float USE_MODULE_KICKSUICIDER           = 1;
  230.      float USE_MODULE_LEVELSELECT            = 1;
  231.      float USE_MODULE_LIGHTNING              = 1;
  232.      float USE_MODULE_MESSAGES               = 1;
  233.      float USE_MODULE_MOTD                   = 1;
  234.      float USE_MODULE_OBSERVER               = 1;
  235.      float USE_MODULE_RANK                   = 1;
  236.      float USE_MODULE_SERVERHELP             = 1;
  237.      float USE_MODULE_SKIN                   = 1;
  238.      float USE_MODULE_SERVERCONSOLE          = 1;
  239.      float USE_MODULE_TELEFRAG               = 1;
  240.      float USE_MODULE_VOTE                   = 1;
  241.      float     USE_SUBMODULE_VOTE_EXIT       = 1;
  242.      float     USE_SUBMODULE_VOTE_EXITRULES  = 1;
  243.   which means that all modules are enabled.
  244.   The USE_SUBMODULE_VOTE_* constants above enable/disable submodules
  245.   of the the module 'Vote'. Setting 'USE_SUBMODULE_VOTE_EXIT=0' disables
  246.   voting for exiting but voting voting for overriding ExitRules will
  247.   still be allowed.
  248.  
  249. # To add a message-of-the-day to be displayed when a player connects to
  250.   the server you should edit the file _MOTD.QC and change the variable 
  251.   'motd_motd' in the function 'MotdInit'.
  252.   Note that by default no message is displayed.
  253.  
  254. # To change the help about server settings (which is displayed when
  255.   connecting to a server or when typing 'help-server') just edit
  256.   the function 'ServerHelpShowServerSettings' in the file _SERVHLP.QC.
  257.  
  258. # If you want to inform players about more special properties of your 
  259.   server have a look at the function 'ModulesShowInfo' in the file 
  260.   _MODULES.QC. You can freely add your own messages there.
  261.  
  262. # The module 'Messages' by default takes care that a player receives no
  263.   messages when picking up ammunition, armor,  etc.
  264.   If you want to allow for some or all of these messages you should edit
  265.   the file _MESSAGE.QH and change the value of the flag 'messages_flag'.
  266.  
  267. # Changing the formula used by the module 'Rank' for calculating the total
  268.   score requires you to edit the function 'RankCountEvent' in the file
  269.   _RANK.QC in an obvious way.
  270.  
  271. # The Module 'LevelSelect' allows to specify which maps are offered on
  272.   the server and in which order they are played.
  273.   To achieve this the function 'LevelSelectSelectLevel' in the file
  274.   _LEVSEL.QC is used. The file also contains a commented example
  275.   which tells you how to set up you own conditions (for instance how
  276.   to exclude certain not-so-good maps).
  277.   By default this module is set up so that everything works like in
  278.   the original version of Quake, except that when a player selects
  279.   the 'end' level the map sequence 'dm1'-...-'dm6'-'end' is played
  280.   instead.
  281.  
  282. # Updating the module 'Skin' may become desirable if new skins become
  283.   available in the file PLAYER.MDL which is distributed as part of the
  284.   Multiskin package. The changes you will have to make are trivial,
  285.   just have a look at the file _SKIN.QC.
  286.  
  287. # Finally compile the sources by typing the command QCCDOS.
  288.   Assuming that compilation succeeded without errors you should now
  289.   copy ..\PROGS.DAT into the directory C:\GAMES\QUAKE\SERVMODS.
  290.   Change directory to C:\GAMES\QUAKE\ and check your changes by typing
  291.      QUAKE -GAME SERVMODS -LISTEN 2
  292.   If you're sure that everything works as expected start your
  293.   dedicated server as usual for instance by
  294.      QUAKE -NOSOUND -NOIPX -NOJOY -DEDICATED 8 +MAP E1M2
  295.   or according to your wishes.
  296.  
  297. -------------------------------------------------------------------------
  298.       
  299. ###### Resources Used:
  300. ----------------------
  301.  
  302. The following impulses are used:
  303.  
  304.     impulse 200    for command 'skin-next'
  305.     impulse 201    for command 'skin-prev'
  306.     impulse 202    for command 'help-skin'
  307.     impulse 203    for command 'rank'
  308.     impulse 204    for command 'help-rank'
  309.     impulse 205    for command 'help-observer'
  310.     impulse 206    for command 'observer-noclip'
  311.     impulse 207    for command 'help-server'
  312.     impulse 208    for command 'init-nextcall'
  313.     impulse 209    for command 'init-nextskin'
  314.     impulse 210    for command 'help-exitrules'
  315.     impulse 211    for command 'help-vote'
  316.     impulse 212    for command 'votes'
  317.     impulse 213    for command 'vote-exit'
  318.     impulse 214    for command 'vote-exitrules'
  319.  
  320. Furthermore the spawnparm parm16 is used to save the player flag
  321. '.float player_flag' across level transitions.
  322.  
  323. -------------------------------------------------------------------------
  324.  
  325. ###### Files:
  326. -------------
  327.  
  328. _modules.qh
  329. _modules.qc       Deals with internal structure of ServerModules.
  330. _plystat.qh
  331. _plystat.qc       Deals with internal structure of ServerModules.
  332. _exitrls.qh       Module ExitRules (Header)
  333. _exitrls.qc       Module ExitRules (Code)
  334. _vote.qh          Module Vote (Header)
  335. _vote.qc          Module Vote (Code)
  336. _init.qh          Module Init (Header)
  337. _init.qc          Module Init (Code)
  338. _kckscdr.qh       Module KickSuicider (Header)
  339. _kckscdr.qc       Module KickSuicider (Code)
  340. _levsel.qh        Module LevelSelect (Header)
  341. _levsel.qc        Module LevelSelect (Code)
  342. _lightng.qh       Module Lightning (Header)
  343. _lightng.qc       Module Lightning (Code)
  344. _message.qh       Module Messages (Header)
  345. _message.qc       Module Messages (Code)
  346. _motd.qh          Module Motd (Header)
  347. _motd.qc          Module Motd (Code)
  348. _observe.qc       Module Observer (Header)
  349. _observe.qh       Module Observer (Code)
  350. _rank.qh          Module Rank (Header)
  351. _rank.qc          Module Rank (Code)
  352. _servhlp.qh       Module ServerHelp (Header)
  353. _servhlp.qc       Module ServerHelp (Code)
  354. _servcon.qh       Module ServerConsole (Header)
  355. _servcon.qc       Module ServerConsole (Code)
  356. _skin.qh          Module Skin (Header)
  357. _skin.qc          Module Skin (Code)
  358. _telefrg.qh       Module Telefrag (Header)
  359. _telefrg.qc       Module Telefrag (Code)
  360. _conv.pl          A perl script used to strip/add CR's when switching
  361.                   between Linux and DOS.
  362. _srvmods.pat      Patch file containing all changes to be made
  363.                   to the original QuakeC sources.
  364. _COPYING          GNU General Public License
  365. _manual.txt       Documentation of ServerModules patches.
  366. _changes.txt      History of changes.
  367. _patch.txt        Provides information on how to patch and on
  368.                   where to get a free copy of the program PATCH.
  369. progs.dat         A precompiled version of the modifications
  370.                   described here.
  371.  
  372. -------------------------------------------------------------------------
  373.       
  374. ###### Copyright:
  375. -----------------
  376.  
  377. /*
  378. **
  379. ** Copyright (C) 1996 Johannes Plass
  380. ** 
  381. ** This program is free software; you can redistribute it and/or modify
  382. ** it under the terms of the GNU General Public License as published by
  383. ** the Free Software Foundation; either version 2 of the License, or
  384. ** (at your option) any later version.
  385. ** 
  386. ** This program is distributed in the hope that it will be useful,
  387. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  388. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  389. ** GNU General Public License for more details.
  390. **
  391. ** You should have received a copy of the GNU General Public License
  392. ** along with this program; if not, write to the Free Software
  393. ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  394. ** 
  395. ** Author:   Johannes Plass (plass@dipmza.physik.uni-mainz.de)
  396. **
  397. */
  398.  
  399. -------------------------------------------------------------------------
  400.       
  401. ###### Acknowledgements:
  402. ------------------------
  403.  
  404. The module 'Skin' is based on Dennis Noordsij's (lnoordsi@inter.NL.net)
  405. Multiskin QuakeC patch.
  406. Please see Dennis Noordsij's QuakeC page
  407.        http://web.inter.NL.net/users/L.J.Noordsij/qc.htm
  408. for further details about MultiSkin.
  409.  
  410.